Dynamic memory allocation allows a computer program to share limited memory resources with other computer programs. Thus, the limited memory resources of the host computer may be distributed among many pieces of code and data. Typically, in a dynamic memory allocation scheme, a dynamically allocated block of memory exists until it is explicitly released by the programmer. Dynamic memory is typically allocated to a program from the pool of memory area known as the heap (or free store).